﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Framework.Entidade.Acesso
{
    [Serializable]
    public class EN_Usuario
    {
        #region Atributos

        private int id;
        private int idPessoaFisica;
        private int idPessoaJuridica;
        private string login;
        private string senha;
        private bool status;

        private EN_PessoaFisica objPessoaFisica;
        private EN_PessoaJuridica objPessoaJuridica;

        private List<EN_Funcionalidade> lstFuncionalidades;
        private List<EN_Grupo> lstGrupos;

        #endregion

        #region Propriedades

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public int IdPessoaFisica
        {
            get { return idPessoaFisica; }
            set { idPessoaFisica = value; }
        }

        public int IdPessoaJuridica
        {
            get { return idPessoaJuridica; }
            set { idPessoaJuridica = value; }
        }

        public string Login
        {
            get { return login; }
            set { login = value; }
        }

        public string Senha
        {
            get { return senha; }
            set { senha = value; }
        }

        public bool Status
        {
            get { return status; }
            set { status = value; }
        }

        public EN_PessoaFisica PessoaFisica
        {
            get
            {
                if (objPessoaFisica == null)
                    objPessoaFisica = new EN_PessoaFisica();

                return objPessoaFisica;
            }
            set { objPessoaFisica = value; }
        }

        public EN_PessoaJuridica PessoaJuridica
        {
            get
            {
                if (objPessoaJuridica == null)
                    objPessoaJuridica = new EN_PessoaJuridica();

                return objPessoaJuridica;
            }
            set { objPessoaJuridica = value; }
        }

        public List<EN_Funcionalidade> ListaFuncionalidades
        {
            get
            {
                if (lstFuncionalidades == null)
                    lstFuncionalidades = new List<EN_Funcionalidade>();

                return lstFuncionalidades;
            }
            set { lstFuncionalidades = value; }
        }

        public List<EN_Grupo> ListaGrupos
        {
            get
            {
                if (lstGrupos == null)
                    lstGrupos = new List<EN_Grupo>();

                return lstGrupos;
            }
            set { lstGrupos = value; }
        }

        #endregion
    }
}
